#include "usefile.h"


/*
**************************************************************************************************************
*
* 函数原型：U32 ah_UseFileId2Name( U32 id, char *filename )
*
* 函数功能：用户文件ID转换为文件名
*
* 函数输入：id			创建文件ID号, 目前最大支持创建10个文件
*		    filename 	文件名字，缓冲长度最少提供100字节
*       
* 函数输出：无
*
* 函数返回：0   成功
*			非0 失败
*   
**************************************************************************************************************
*/
U32 ah_UseFileId2Name( U32 id, char *filename )
{
 	memset( filename, '\0', 100 );
 	//sprintf( filename, APP_FILE_PRENAME );
 	//strcat( filename, "U_" );

	switch( id )
	{
		case DEF_USERID_SysCfg:
			strcat( filename, "SysCfg" );
			break;
		case DEF_USERID_DealCfg:
			strcat( filename, "DealCfg" );
			break;
		case DEF_USERID_OthCfg:
			strcat( filename, "OthCfg" );
			break;
		case DEF_USERID_CityID:
			strcat( filename, "CityID" );
			break;
		case DEF_USERID_UPBinInfo:
			strcat( filename, "UPBinInfo" );
			break;
		case DEF_USERID_UP_PosTlv:
			strcat( filename, "UP_PosTlv" );
			break;
		case DEF_USERID_UP_SysCfg:
			strcat( filename, "UP_SysCfg" );
			break;
		case DEF_USERID_UP_ComStat:
			strcat( filename, "UP_ComStat" );
			break;	
		default:
			return 1;
	}

	return 0;
}


/*
**************************************************************************************************************
*
* 函数原型：U32 AH_Read_UseFile( U32 id, U08 *buf, U32 size )
*
* 函数功能：读取用户创建的自定义文件
*
* 函数输入：id      需要读取的文件ID号
*
* 函数输出：buf     读取的文件存储缓冲区 
*
* 函数返回：0          成功  
*           其它       失败 
*   
**************************************************************************************************************
*/
U32 APP_Read_UseFile( U32 id, U08 *buf, U32 size )
{
	int 	ret, add;
	char 	FileName[100] = {0};
	FILE   * fid;

	ah_UseFileId2Name(id, FileName);								//将ID号转换为文件名

	fid = fopen(FileName,"rb");
	if( fid < 0 )
	{
		DEF_Err_Debug;
		goto Error;
	}
	add = 0;
	ret = fseek(fid, add, SEEK_SET);	
	if( ret != 0 )
		goto Error;
	ret = fread(buf, 1,size,fid);
	if( ret < 0 )
		goto Error;
	else if( ret < size )	//
		return 1;
	ret = fclose(fid);
	if( ret != 0 )
		goto Error;

	return 0;
	Error:
	DEF_Err_Debug;
	return 1;
}

/*
**************************************************************************************************************
*
* 函数原型：U32 AH_Write_UseFile( U32 id, U08 *buf, U32 size )
*
* 函数功能：更新用户创建的自定义文件内容
*
* 函数输入：id      需要写入的文件ID号
*           buf     写入的文件存储缓冲区
*
* 函数输出：
*
* 函数返回：0          成功   
*           其它       失败 
*   
**************************************************************************************************************
*/
U32 APP_Write_UseFile( U32 id, U08 *buf, U32 size )
{
	int   ret, add;
	char 	FileName[100] = {0};
	FILE * fid;

	ah_UseFileId2Name(id, FileName);								//将ID号转换为文件名

	fid = fopen(FileName,"wb");
	if( fid < 0 )
	{
		DEF_Err_Debug;
		goto Error;
	}
	add = 0;
	ret = fseek(fid, add, SEEK_SET);				
	if( ret != 0 )
		goto Error;
	ret = fwrite(buf,size,1,fid);
	if( ret < 0 )
		goto Error;

	ret = fclose(fid);
	if( ret != 0 )
		goto Error;

	return 0;
	Error:
	DEF_Err_Debug;
	return 1;
}


U32 APP_Create_UseFile( U32 id, U32 size )			//创建用户自定义文件
{
	return 0;
}
U32 APP_Open_UseFile( U32 id, U32 size )				//打开用户自定义文件
{
	return 0;
}
U32 APP_Read_SysFile( U32 id, U08 *buf, U32 size ) 		//读取系统参数文件
{
	int 	ret, add;
	char 	FileName[100] = {0};
	FILE   * fid;

	ah_UseFileId2Name(id, FileName);								//将ID号转换为文件名

	fid = fopen(FileName,"rb");
	if( fid < 0 )
	{
		DEF_Err_Debug;
		goto Error;
	}
	add = 0;
	ret = fseek(fid, add, SEEK_SET);	
	if( ret != 0 )
		goto Error;
	ret = fread(buf, 1,size,fid);
	if( ret < 0 )
		goto Error;
	else if( ret < size )	//
		return 1;
	ret = fclose(fid);
	if( ret != 0 )
		goto Error;

	return 0;
	Error:
	DEF_Err_Debug;
	return 1;
}
U32 APP_Write_SysFile( U32 id, U08 *buf, U32 size )		//写入系统参数文件
{
	int   ret, add;
	char 	FileName[100] = {0};
	FILE * fid;

	ah_UseFileId2Name(id, FileName);								//将ID号转换为文件名

	fid = fopen(FileName,"wb");
	if( fid < 0 )
	{
		DEF_Err_Debug;
		goto Error;
	}
	add = 0;
	ret = fseek(fid, add, SEEK_SET);				
	if( ret != 0 )
		goto Error;
	ret = fwrite(buf,size,1,fid);
	if( ret < 0 )
		goto Error;

	ret = fclose(fid);
	if( ret != 0 )
		goto Error;

	return 0;
	Error:
	DEF_Err_Debug;
	return 1;
}